﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ArrayWithout_0
{
    class Program
    {
        static uint ReadUintFromConsole()
        {
            try
            {
                return (uint.Parse(Console.ReadLine()));
            }
            catch
            {
                Console.WriteLine("Input error");
                return ReadUintFromConsole();
            }
        }
        static int[] GenerateRandomArray(uint length, uint limitval)
        {
            if (length < 1)
            {
                throw new ArgumentException("length");
            }
            int[] result = new int[length];
            int limit = (int)limitval;
            Random rnd = new Random();
            for (int i = 0; i < length; i++)
            {
                int val = rnd.Next(0, limit);
                result[i] = val;
            }
            return result;
        }
        static int[] RemoveZeros(int[] input_ar)
        {
            int zerosfound = 0;
            for (int i = 0; i < input_ar.Length; i++)
            {
                if (input_ar[i] == 0)
                {
                    zerosfound++;
                    MoveArrayItem(input_ar, i--);
                }
            }
            Array.Resize(ref input_ar, input_ar.Length - zerosfound);
            return input_ar;
        }
        static void MoveArrayItem(int[] array, int position)
        {
            if (array == null)
                throw new ArgumentNullException("array");
            if (position < 0 || position > array.Length - 2)
                throw new ArgumentOutOfRangeException("position");
            for (int i = position; i < array.Length - 1; i++)
                array[i] = array[i + 1];
        }
        static void PrintArray(int[] array)
        {
            for (int i = 0; i < array.Length; i++)
            {
                Console.Write("{0} ", array[i]);
            }
        }
        static void Main(string[] args)
        {
            Console.Write("Введите длину массива : ");
            uint length = ReadUintFromConsole();
            Console.Write("Введите верхний предел для значений елементов массива : ");
            uint limitval = ReadUintFromConsole();
            int[] array1 = GenerateRandomArray(length, limitval);
            Console.WriteLine("Заданный массив  : ");
            PrintArray(array1);
            Console.WriteLine("");
            Console.WriteLine("Преобразованный массив (без нулей) : ");
            int[] array2 = RemoveZeros(array1);
            PrintArray(array2);
            Console.ReadKey();
        }
    }
}
